package cn.org.eshow.service;

import cn.org.eshow.bean.query.BillQuery;
import cn.org.eshow.common.page.Page;
import cn.org.eshow.model.Bill;
import cn.org.eshow.model.User;

import javax.jws.WebService;
import java.util.List;

/**
 *
 */
@WebService
public interface BillManager extends GenericManager<Bill, Integer> {

    /**
     *
     * @param query
     * @return
     */
    List<Bill> list(BillQuery query);

    /**
     *
     * @param query
     * @return
     */
    Page<Bill> search(BillQuery query);

    /**
     *
     * @param query
     * @return
     */
    Long count(BillQuery query);

    /**
     *
     * @param hql
     * @param params
     * @return
     */
    List<Bill> list(String hql, Object[] params);


    /**
     * 更新订单流水(针对线下退款流水用)
     * @param old
     * @param bill
     * @return
     */
    Bill updateBill(Bill old,Bill bill);

    /**
     *
     * @param user 用户
     * @param category 账单分类 (用户，平台)
     * @param type 类型 （充值，消费支出）
     * @param receive 收到金额
     * @param outlay 支出金额
     * @param balance 账户余额
     * @param orderType 外部订单类型
     * @param orderNo 外部订单号
     * @param remark 备注
     * @param img 图片地址
     * @param state 状态
     */
    void calc(User user, String category, String type, Double receive, Double outlay, Double balance, String orderType, String orderNo, String remark, Integer state, String img);

}